# 1.
# 有如下
# v1 = {'郭宝元', '李杰', '太白', '梦鸽'}
# v2 = {'李杰', '景女神'}
#       请得到 v1 和 v2 的交集并输出
# print(v1 & v2)
#       请得到 v1 和 v2 的并集并输出
# print(v1 | v2)
#       请得到 v1 和 v2 的 差集并输出
# print(v1 - v2)
#       请得到 v2 和 v1 的 差集并输出
# print(v2 - v1)
# 2.循环提示用户输入，并将输入内容追加到列表中（如果输入N或n则停止循环）
'''
s = []
while True:
    user = input('>>>>').strip()
    if user.upper() == 'N':
        print('再见')
        break
    else:
        s.append(user)
    print(s)
'''
# 3.
# 写代码实现
# 循环提示用户输入，如果输入值在v1中存在，则追加到v2中，如果v1中不存在，则添加到v1中。（如果输入N或n则停止循环）
'''
v1 = {'alex', '武sir', '黑哥'}
v2 = []
while 1:
    user = input('>>>')
    if user.upper() == 'N':
        print('再见')
        break
    elif user in v1:
        v2.append(user)
    else:
        v1.add(user)
    print(v1)
    print(v2)
'''
# 4.
# 判断以下值那个能做字典的key ？那个能做集合的元素？
# 1                     能
# - 1                   能
# ""                    能
# None                  能
# [1, 2]                不能
# (1, )                 能
# {11, 22, 33, 4}       不能
# {'name': 'wupeiq', 'age': 18}       不能

# 5. is 和 == 的区别？
# is 是判断两边的内存地址是否相同
# == 是判断两边的值是否相同

# 6.
# type使用方式及作用？
# 查看类型 print(ytpe(查看的类型))

# 7.
# id的使用方式及作用？
# 查看数据的内存地址   print(id(查看的数据))

# 8.
# 看代码写结果并解释原因
# v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
# v2 = {'k1': 'v1', 'k2': [1, 2, 3]}
#
# result1 = v1 == v2
# result2 = v1 is v2
# print(result1)           # 等号两边的值相同时True
# print(result2)           # is 两边的内存地址不同 所以是False
# 9.
# 看代码写结果并解释原因
# v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
# v2 = v1
#
# result1 = v1 == v2      # True
# result2 = v1 is v2      # True
# print(result1)
# print(result2)
# 10.
# 看代码写结果并解释原因
# v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
# v2 = v1
#
# v1['k1'] = 'wupeiqi'
# print(v2)                           # 赋值 ，都改变，内存地址都一样
# 11.
# 看代码写结果并解释原因

# v1 = '人生苦短，我用Python'
# v2 = [1, 2, 3, 4, v1]
# v1 = "人生苦短，用毛线Python"
# print(v2)              # [1, 2, 3, 4, '人生苦短，我用Python']    从上向下执行

# 12.
# 看代码写结果并解释原因
# info = [1, 2, 3]
# userinfo = {'account': info, 'num': info, 'money': info}
#
# info.append(9)
# print(userinfo)       # 浅拷贝问题，都改变
#
# info = "题怎么这么多"
# print(userinfo)       # 赋值问题，从上向下执行，info不变

# 13.
# 看代码写结果并解释原因
# info = [1, 2, 3]
# userinfo = [info, info, info, info, info]
#
# info[0] = '不仅多，还特么难呢'
# print(info, userinfo)             # 把info赋值给了userinfo 然后info改变，最后全变

# 14.
# 看代码写结果并解释原因
# info = [1, 2, 3]
# userinfo = [info, info, info, info, info]
#
# userinfo[2][0] = '闭嘴'
# print(info, userinfo)                   # 一个改变都改变

# 15.
# 看代码写结果并解释原因
# info = [1, 2, 3]
# user_list = []
# for item in range(10):
#     user_list.append(info)
#
# info[1] = "是谁说Python好学的？"
#
# print(user_list)               #直接打印十次[1，"是谁说Python好学的？"，3]


# 16.
# 看代码写结果并解释原因
# data = {}
# for i in range(10):
#     data['user'] = i
# print(data)               # 在内部循环了十遍 因为键是唯一的，如果有多余的就会一直覆盖，所以最后是{'user': 9}


# 17.
# 看代码写结果并解释原因
# data_list = []
# data = {}
# for i in range(10):
#     data['user'] = i
# data_list.append(data)
# print(data)              # 答案就是{'user':9}

# 18.
# 看代码写结果并解释原因
# data_list = []
# for i in range(10):
#     data = {}
# data['user'] = i
# data_list.append(data)
# print(data_list)         # 答案就是[{'user':9}]

# 19.
# 使用循环打印出一下效果：
# *
# **
# ***
# ****
# for i in range(1,5):
#     print(i*"*")

# *****
# ****
# ***
# **
# *
# for i in range(5,0,-1):
#     print(i*'*')

# *
# ***
# *****
# *******
# *********
# for i in range(1,10,2):
#     print(i*'*')
# 20.
# 敲七游戏.从1开始数数.遇到7或者7的倍数（不包含17, 27, 这种数）要在桌上敲⼀下.
# 编程来完成敲七.给出⼀个任意的数字n.从1开始数.数到n结束.把每个数字都放在列表中, 在数的过程中出现7或
# 者7的倍数（不包含17, 27, 这种数）.则向列表中添加⼀个
# '咣'
# 例如, 输⼊10.
# lst = [1, 2, 3, 4, 5, 6, '咣', 8, 9, 10]

while 1:
    lst = []
    user_int = int(input('>>>'))
    for i in range(1, user_int+1):
        if i % 7 == 0:
            lst.append('咣')
        else:
            lst.append(i)
    print(lst)